import * as $math from 'mathjs';
export const math = {
  // 加
  add() {
    return comp('add', arguments);
  },

  // 减 
  subtract() {
    return comp('subtract', arguments);
  },

  // 乘
  multiply() {
    return comp('multiply', arguments);
  },

  // 除
  divide() {
    return comp('divide', arguments);
  },

  /**
   * @decription 四舍五入保留几位小数
   * @param {Number} number 待转化数字
   * @param {Number} decimal 保留几位小数（默认两位）
   * @returns 字符串格式转化后数字
   */
  toFixed(number, decimal = 2) {
    var sign = (number < 0) ? -1 : 1;
    var pow = Math.pow(10, decimal);
    number = sign * number;
    return (sign * Math.round(number * pow) / pow).toFixed(decimal); // 返回保留两位小数的
  }

};

function comp(_func, args) {
  let t = $math.chain($math.bignumber(args[0]));
  for (let i = 1; i < args.length; i++) {
    t = t[_func]($math.bignumber(args[i]));
  }
  // 防止超过6位使用科学计数法
  return parseFloat(t.done());
}